陣列是一種有序集合,放入其中的資料都有一個編號,從0開始遞增,開發者可以找到與其對應的值。
陣列能夠放入其中的資料並不是只有數字而已,可以存放任意型別的資料,但是所有資料型別必須統一。
類型推斷判斷為Int類型的陣列
var a = [1,2,3,4]
直接宣告為String類型的陣列
var b:[String] = ["Hello", "World"]
宣告為陣列,類型為浮點型
var c:Array = [1.3, 21.5]
創建空陣列
var array1: [Int]
var array2:Array
array1 = []
array2 = Array()
透過一組元素創建陣列
array2 = Array(arrayLiteral: 1,2,3)
陣列與字串類型類似,空陣列的含義並不是nil,而是陣列中的元素為空
在Swift中,陣列採用結構體的方式來實現,對於大量重複元素的陣列,開發者可以直接使用快捷方式來創建。
var array3 = [String](repeating: "Hello", count: 10)
print(array3)
// 印出 ["Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello", "Hello"]
var array4 = [Int](repeating: 1, count: 10)
print(array4)
// 印出 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
需要注意的是陣列在宣告時必須明確其類型,但不一定要直接指定,如果陣列在宣告時,有初始值,則可以直接利用型別推斷出其類型。
在陣列中,也可以利用 + 來進行陣列的相加。
var array5 = [1,2,3] + [4,5,6]
print(array5)
// 印出 [1, 2, 3, 4, 5, 6]
陣列中也提供了許多方法來獲取陣列中的訊息元素,或是對陣列進行增刪查改。
先宣告一個陣列
var array = [1,2,3,4,5,6,7,8,9]
count 來獲取陣列中的元素個數
print(array.count)
// 印出 9
isEmpty 來確認陣列是否為空
if array.isEmpty {
print("Empty")
}
// 上面判斷不為空所以不會印出任何東西
透過下標來獲取陣列中的元素 1
var x = array[0]
// 印出 1
獲取區間元素組成的新陣列
var subArray = array[0...3]
print(subArray)
// 印出 [1, 2, 3, 4]
獲取陣列中的第一個元素
var y = array.first
獲取陣列中的最後一個元素
var z = array.last
修改陣列中某個位置的元素
array[0] = 0
修改陣列中區間範圍的元素
向陣列添加一個新元素
array.append(10)
向陣列添加一組新元素
array.append(contentsOf: [11,12,13])
向陣列中某個位置插入一個元素
array.insert(0, at: 0)
向陣列中某個位置插入一組元素
array.insert(contentsOf: [-2,-1], at: 0)
刪除陣列中某個位置的元素
array.remove(at: 1)
刪除陣列中第一個位置的元素
array.removeFirst()
刪除陣列中最後一個位置的元素
array.removeLast()
刪除前幾位元素,參數為要刪出的個數
array.removeFirst(3)
刪除後幾位元素,參數為要刪出的個數
array.removeLast(6)
刪除一個範圍的元素
array.removeSubrange(0...2)
取代一個範圍中的元素
array.replaceSubrange(0...2, with: [0,1])
刪除所有元素
array.removeAll()
判斷陣列中是否包含某個元素
if array.contains(1) {
print(true)
}
上面的方法,需要注意一個點,能夠進行增刪查改的,只有陣列中宣告的是變數才行,常數則不能使用這些操作。
先宣告一個常數Int陣列
let arrayLet = [0,1,2,3,4]
let arrayLet2 = [(1,2),(2,3),(3,4)]
for item in arrayLet {
print(item)
}
// 印出 0 1 2 3 4
會return一個元組集合,這個與String類型不同的是,陣列的下標可以為Int類型,而String的下標須為嚴格的Index類型。
for item in arrayLet.enumerated() {
print(item)
}
陣列 indices,會return一個範圍,此範圍就是陣列下標的範圍
for index in arrayLet2.indices {
print(arrayLet2[index], separator: "")
}
宣告一個陣列
var arraySort = [1,3,5,6,7]
從大排到小
arraySort = arraySort.sorted(by: >)
從小排到大
arraySort = arraySort.sorted(by: <)
獲取陣列中的最大值
arraySort.max()
獲取陣列中的最小值
arraySort.min()
接下來,是集合Set的介紹